# -*- coding: utf-8 -*-
# 1.基于上一关的结果trainX_txt,Y,testX_txt，利用机器学习包的内置函数，
#   计算逆向词频，并构造特征集，对训练数据集按80%训练、20%测试随机划分，
#   构建支持向量机模型，返回模型准确率rv和预测准确率rs。
# 2.最后，利用训练好的模型，对testX_txt进行预测，返回测试集的情感分类标签值。
def return_values():
    import step10_2
    from sklearn.feature_extraction.text import TfidfVectorizer
    from sklearn.model_selection import train_test_split
    from sklearn.svm import SVC
    from sklearn.metrics import accuracy_score

    # 获取上一关的结果
    r = step10_2.return_values()
    trainX_txt, Y, testX_txt = r[0], r[1], r[2]

    # 计算TF-IDF特征
    vectorizer = TfidfVectorizer()
    X = vectorizer.fit_transform(trainX_txt)
    testX = vectorizer.transform(testX_txt)

    # 划分训练集和测试集（80%训练，20%测试）
    X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=42)

    # 构建支持向量机模型
    model = SVC(kernel='linear', random_state=42)
    model.fit(X_train, Y_train)

    # 计算模型在测试集上的准确率
    Y_pred = model.predict(X_test)
    rv = accuracy_score(Y_test, Y_pred)

    # 对测试集testX_txt进行预测
    test_y = model.predict(testX)

    # 返回预测准确率和测试集情感分类标签值
    rs = rv  # 这里假设预测准确率与模型准确率相同
    return (rv, rs, test_y)